package com.goods.lucene.tool;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.NumericField;

import com.common.domain.GoodsVo;
import com.common.resource.GoodsResource;
import com.common.tool.DateUtil;
import com.common.tool.StringUtils;

/**
 * 
 * @author penghui.li 2012-06-07
 */
public class DocumentTool {

	public static Document findObjToDocByObj(GoodsVo vo) {
		Document doc = new Document();
		if (StringUtils.isNotEmpty(vo.getGoodsSn())) {
			doc.add(new Field(GoodsResource.FIELD_GOODS_SN, vo.getGoodsSn(),
					Field.Store.YES, Field.Index.ANALYZED));
		}
		if (StringUtils.isNotEmpty(vo.getGoodsName())) {
			doc.add(new Field(GoodsResource.FIELD_GOODS_NAME,
					vo.getGoodsName(), Field.Store.YES, Field.Index.ANALYZED));
		}
		if (StringUtils.isNotEmpty(vo.getBrandName())) {
			doc.add(new Field(GoodsResource.FIELD_BRAND_NAME,
					vo.getBrandName(), Field.Store.YES, Field.Index.ANALYZED));
		}
		if (StringUtils.isNotEmpty(vo.getGoodsSexCn())) {
			doc.add(new Field(GoodsResource.FIELD_GOODS_SEX_CN, vo
					.getGoodsSexCn(), Field.Store.YES, Field.Index.ANALYZED));
		}
		if (StringUtils.isNotEmpty(vo.getCatName())) {
			doc.add(new Field(GoodsResource.FIELD_GOODS_CAT_NAME, vo
					.getCatName(), Field.Store.YES, Field.Index.ANALYZED));
		}
		if (StringUtils.isNotEmpty(vo.getSuperCatName())) {
			doc.add(new Field(GoodsResource.FIELD_GOODS_SUPCAT_NAME, vo
					.getSuperCatName(), Field.Store.YES, Field.Index.ANALYZED));
		}
		if (StringUtils.isNotNULL(vo.getDateTime())) {
			doc.add(new NumericField(GoodsResource.FIELD_CREATE_TIME,
					Field.Store.YES, true).setLongValue(vo.getDateTime()
					.getTime()));
		}
		return doc;
	}

	public static GoodsVo findDoc2ObjectByDoc(Document doc) {
		GoodsVo vo = new GoodsVo();
		vo.setGoodsName(doc.get(GoodsResource.FIELD_GOODS_NAME));
		vo.setGoodsSn(doc.get(GoodsResource.FIELD_GOODS_SN));
		vo.setGoodsSexCn(doc.get(GoodsResource.FIELD_GOODS_SEX_CN));
		vo.setBrandName(doc.get(GoodsResource.FIELD_BRAND_NAME));
		vo.setCatName(doc.get(GoodsResource.FIELD_GOODS_CAT_NAME));
		vo.setSuperCatName(doc.get(GoodsResource.FIELD_GOODS_SUPCAT_NAME));
		vo.setDateTime(DateUtil.parseFormatLongToDate(
				Long.parseLong(doc.get(GoodsResource.FIELD_CREATE_TIME)),
				"yyyy-MM-dd HH:mm:ss"));
		return vo;
	}
}
